enum {
PROP_0,
- PROP_NAME
+ PROP_NAME,
+ PROP_VALUE_TYPE
};
static GHashTable *parse_funcs = NULL;
g_assert (g_hash_table_lookup (klass->properties, property->name) == NULL);
g_hash_table_insert (klass->properties, property->name, property);
break;
+ case PROP_VALUE_TYPE:
+ property->value_type = g_value_get_gtype (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
case PROP_NAME:
g_value_set_string (value, property->name);
break;
+ case PROP_VALUE_TYPE:
+ g_value_set_gtype (value, property->value_type);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
P_("The name of the property"),
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (object_class,
+ PROP_VALUE_TYPE,
+ g_param_spec_gtype ("value-type",
+ P_("Value type"),
+ P_("The value type returned by GtkStyleContext"),
+ G_TYPE_NONE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
klass->properties = g_hash_table_new (g_str_hash, g_str_equal);
}
static void
_gtk_style_property_init (GtkStyleProperty *property)
{
+ property->value_type = G_TYPE_NONE;
}
static void
return property->name;
}
+/**
+ * _gtk_style_property_get_value_type:
+ * @property: the property to query
+ *
+ * Gets the value type of the @property, if the property is usable
+ * in public API via _gtk_style_property_assign() and
+ * _gtk_style_property_query(). If the @property is not usable in that
+ * way, %G_TYPE_NONE is returned.
+ *
+ * Returns: the value type in use or %G_TYPE_NONE if none.
+ **/
+GType
+_gtk_style_property_get_value_type (GtkStyleProperty *property)
+{
+ g_return_val_if_fail (GTK_IS_STYLE_PROPERTY (property), G_TYPE_NONE);
+
+ return property->value_type;
+}
+
void
_gtk_style_property_register (GParamSpec *pspec,
node = g_object_new (GTK_TYPE_CSS_STYLE_PROPERTY,
"name", pspec->name,
+ "value-type", pspec->value_type,
NULL);
node->flags = flags;
node->pspec = pspec;